#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<unistd.h>
#include<sys/types.h> 
#include<sys/socket.h>
#include<netinet/in.h>
#include<lserver.h>
#include<vais.h>
#include<errno.h>
#include<fcntl.h>

void* VAIS_Lobe_server (void* port){
     int sockfd, newsockfd, portno;
     socklen_t clilen;
     char buffer[256];
     struct sockaddr_in serv_addr, cli_addr;
     int n;
     if((sockfd = socket (AF_INET, SOCK_STREAM, 0)) == -1) 
        error ("ERROR opening socket");
     bzero((char *)&serv_addr, sizeof (serv_addr));
     portno = atoi (port);
     serv_addr.sin_family = AF_INET;
     serv_addr.sin_addr.s_addr = INADDR_ANY;
     serv_addr.sin_port = htons (portno);
     if(bind (sockfd, (struct sockaddr*)&serv_addr, sizeof (struct sockaddr_in)) == -1){
       error ("ERROR on binding : lserver.c");
       printf ("Error : %s\n", strerror (errno));
       debug_i (portno, "VAIS_Lobe_server", "lserver.c");
     }
     listen (sockfd,5);
     clilen = sizeof (cli_addr);
     newsockfd = accept (sockfd, 
                 (struct sockaddr *) &cli_addr, 
                 &clilen);
     if(newsockfd < 0) 
          error ("ERROR on accept");
     bzero (buffer,256);
     n = read (newsockfd,buffer,255);
     if(n < 0) error("ERROR reading from socket");
     if(strcmp (buffer, "0x0BEBE") == 0){
       bzero (buffer, 256);
       n = read (newsockfd, buffer, 255);
       printf ("%s\n", buffer);
     }
     n = write (newsockfd,"0x00",4);
     if(n < 0) error ("ERROR writing to socket");
     close (newsockfd);
     close (sockfd);
     return (null); 
}
